#ifndef _TASK_FACTORY_HPP
#define _TASK_FACTORY_HPP

#include <GA\BinaryString\BinaryString.hpp>
#include <GA\Task\Task.hpp>

namespace unitraf
{

//this define an interface for abstract factory 
//class creates task-specific objects for GA 
class TaskFactory
{
public:
	
	//methods
	
	virtual BinaryString* createBinStr( ) const = 0;
	virtual Task* createTask( ) const = 0;


private:
	TaskFactory( const TaskFactory& ) { } //no constructors for interface class
protected:
	TaskFactory( ) { } //no constructors for interface class
};

} //namespace unitraf


#endif //#ifndef _TASK_FACTORY_HPP